package main;

import bean.Express;
import dao.ExpressDao;
import view.Views;

//调度逻辑
public class Main {
    //初始化视图对象和dao对象(数据操作)
    private static Views view = new Views();
    private static ExpressDao dao = new ExpressDao();

    public static void main(String[] args) {
        //1.欢迎
        view.welcome();
        //2.循环 弹出身份选择菜单
        f:while(true){
            int menu = view.menu();
            switch (menu){
                case 0:
                    break f;
                case 1:
                    cClient();//快递员菜单
                    break ;
                case 2:
                    uClient();//用户菜单
                    break ;
            }
        }
        view.bye();//程序结束
    }

    /**
     * 快递员菜单
     */
    private static void cClient() {
        //int cmenu = view.cMenu();
        int cmenu;
        while(true){
            cmenu=view.cMenu();
            switch (cmenu){
                case 0:
                    return;
                case 1: {//存快递
                    //输入快递信息
                    Express e = view.insert();
                    //此快递是否存储过
                    Express e1 = dao.findByNumber(e.getNumber());
                    if (e1 == null) { //未存储过
                        dao.add(e);
                        view.printExpress(e);//打印快递信息
                    } else {
                        //快递单号在柜中已存在
                        view.expressExist();
                    }
                }
                break;

                case 2:{//修改快递
                    //view提示用户输入快递单号
                    String number = view.findByNumber();
                    //dao根据快递单号查找快递
                    Express e = dao.findByNumber(number);
                    //打印快递信息
                    if(e==null){
                        view.printNull();
                    }else {
                        view.printExpress(e);
                    }
                    //修改快递信息
                    view.update(e);
                    dao.update(e,e);
                    view.printExpress(e);//打印快递信息
                }
                break;
                case 3: {
                    //删除
                    //输入快递单号
                    String number = view.findByNumber();
                    //查找快递对象
                    Express e = dao.findByNumber(number);
                    //
                    if (e == null) {
                        view.printNull();//没找到快递，输入单号有问题
                    } else {
                        view.printExpress(e);//找到并打印
                        int type = view.delete();//确认删除与否
                        if (type == 1) { //确认要删除
                            dao.delete(e);
                            view.success();
                        }
                    }
                }
                break;
                case 4:
                    //查看所有
                    Express[][] all = dao.findAll();
                    view.printAll(all);
                    break;

            }
        }
    }

    private static void uClient() {
        //获取取件码
        int code = view.uMenu();
        //取出快递
        Express e = dao.findByCode(code);
        if (e==null){
            view.printNull();
        }else{
            view.success();
            view.printExpress(e);
            dao.delete(e);
        }
    }
}